/*
明明想在学校中请一些同学一起做一项问卷调查，为了实验的客观性，他先用计算机生成了N个1到1000之间的随机整数（N <= 100），对于其中重复的数字，只保留一个，把其余相同的数去掉，不同的数对应着不同的学生的学号。然后再把这些数从小到大排序，按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作。
Input
输入数据有多组
每组有2行，第1行为1个正整数，表示所生成的随机数的个数：N
第2行有N个用空格隔开的正整数，为所产生的随机数。

Output
每组输出也是2行，第1行为1个正整数M，表示不相同的随机数的个数。第2行为M个用空格隔开的正整数，为从小到大排好序的不相同的随机数。

Sample Input
10
20 40 32 67 40 20 89 300 400 15

Sample Output
8
15 20 32 40 67 89 300 400
*/
#include <bits/stdc++.h>
#include <iostream>
using namespace std;
#define MAX 10001
int main()
{
    set<int> a;
    set<int>::iterator it;
    int n, x, i;
    while (cin >> n)
    {
        a.clear();
        for (i = 1; i <= n; i++)
        {
            cin >> x;
            a.insert(x);
        }
        cout << a.size() << endl;
        for (it = a.begin(); it != a.end(); i++, it++)
        {
            if (it == a.begin())
            {
                cout << *it;
            }
            else
            {
                cout << " " << *it;
            }
        }
        cout << endl;
    }
    return 0;
}
